import {Request, Response, NextFunction, Router} from "express";
import {Repository} from "sequelize-typescript";
// import {check, validationResult} from 'express-validator'
import {Announce} from "../models";
import {getAnnounceList, getNews} from "../util/reptiles";

interface BodyRequestBody extends Request {
    body: {
        [key: string]: string | undefined
    }
}


const announceRouterFactory = (
    announceRepository: Repository<Announce>,
    ) => Router()
        .get('/', async (req: BodyRequestBody, res: Response, next: NextFunction) => {
                try {
                    const announceList = await getAnnounceList()
                    const newsList = await getNews()
            // todo 这里可以做一个缓存，将爬取的数据存进数据库
                    return res.json( {
                        code: 1,
                        data:{
                            announceList,
                            newsList,
                        },
                        msg: '数据获取成功'
                    })
                } catch (e) {
                    console.log(e);
                    res.json({
                        errCode: 10001,
                        msg: '操作失败'
                    })
                    next()
                }
            }
            // homeRepository.findAll()
            // .then(posts => res.json(posts))
            // .catch(next)
        )
        // .post('/', [
        //         check('swiper').isLength({min: 1}),
        //         check('curriculum').isLength({min: 1}),
        //         check('notice').isLength({min: 1}),
        //         check('saying').isLength({min: 1}),
        //     ], async (req: BodyRequestBody, res: Response, next: NextFunction) => {
        //         const error = validationResult(req)
        //         if (!error.isEmpty()) {
        //             return res.status(422).json({
        //                 errCode: 10000,
        //                 msg: error.array()
        //             })
        //         }
        //         try {
        //             const list = await announceRepository.update({
        //                 swiper: req.body.swiper,
        //                 curriculum: req.body.curriculum,
        //                 notice: req.body.notice,
        //                 saying: req.body.saying
        //             },{
        //                 where: {
        //                     id: 1
        //                 }
        //             })
        //             if(list[0] === 1) {
        //                 console.log('--- 数据更新成功 ---');
        //                 return res.json({
        //                     code: list[0],
        //                     msg: '更新成功'
        //                 })
        //             }
        //             res.json( {
        //                 errCode: 10001,
        //                 msg: '数据获取失败'
        //             })
        //         } catch (e) {
        //             console.log(e);
        //             next()
        //         }
        //     }
        //     // homeRepository.findAll()
        //     // .then(posts => res.json(posts))
        //     // .catch(next)
        // )
    // .get('/', async (req: BodyRequestBody, res: Response, next: NextFunction) => {
    //         const list = await homeRepository.findAll()
    //         res.json(list || {
    //             errCode: 10001,
    //             msg: '数据获取失败'
    //         })
    //     }
    //     // homeRepository.findAll()
    //     // .then(posts => res.json(posts))
    //     // .catch(next)
    // )

    // .get('/', async (req, res, next) => {
    //         const list = await homeRepository.findAll()
    //         res.json(list || {
    //             errCode: 10001,
    //             msg: '数据获取失败'
    //         })
    //     }
    //     // homeRepository.findByPk(req.params.id)
    //     // .then(post => post
    //     //   ? res.json(post)
    //     //   : next({statusCode: 404}))
    //     // .catch(next)
    // )
    //
    // .post('/posts', (req, res, next) =>
    //     homeRepository.create(req.body)
    //         .then(post => res.json(post))
    //         .catch(next)
    // )

;
export default announceRouterFactory
